// (1) 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
let arr = [2, 7, 0, 1, 5];
let target = 9;
const ul = document.querySelector(".oul");
ul.innerHTML = arr
  .map((item, index) => {
    return `<li>${item}</li>`;
  })
  .join("");
const twoSum = (arr, target) => {
  let result = [];
  // 循环数组下标
  for (let i = 0; i < arr.length; i++) {
    // 当前值 arr[i], 当前下标 i
    let a = target - arr[i];
    for (let j = i + 1; j < arr.length; j++) {
      if (a === arr[j]) {
        result.push(i);
        result.push(j);
      }
    }
  }
  console.log(result);
};
// twoSum(arr, target);

// (2) 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
// 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
const plalindrome = (num) => {
  //数字转为字符串
  let numStr = num.toString();
  //字符串转数组并翻转数组再转为字符串
  let reStr = numStr.split("").reverse().join("");
  // 判断回文是否相等
  return numStr === reStr;
};
// alert(plalindrome(12321));

// 不会
// （3）给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串 的长度。
let s = "abckkkssbclopcla";
var lengthOfLongestSubstring = function (s) {
  // 哈希集合，记录每个字符是否出现过
  const occ = new Set();
  let n = s.length;
  // 右指针，初始值为 -1，相当于我们在字符串的左边界的左侧，还没有开始移动
  let rk = -1,
    ans = 0;
  for (let i = 0; i < n; ++i) {
    if (i != 0) {
      // 左指针向右移动一格，移除一个字符
      occ.delete(s.charAt(i - 1));
    }
    while (rk + 1 < n && !occ.has(s.charAt(rk + 1))) {
      // 不断地移动右指针
      occ.add(s.charAt(rk + 1));
      ++rk;
    }
    // 第 i 到 rk 个字符是一个极长的无重复字符子串
    ans = Math.max(ans, rk - i + 1);
  }
  return ans;
};
// console.log(lengthOfLongestSubstring(s));

// （4）给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
/* 
输入：nums1 = [1,3], nums2 = [2]
输出：2.00000
解释：合并数组 = [1,2,3] ，中位数 2
*/
let nums1 = [1, 3],
  nums2 = [2];
const mergeNums = (nums1, nums2) => {
  // 先合并，再排序
  let arr = [...nums1, ...nums2];
  arr.sort((a, b) => a - b);
  // 查找中位数，判断是单双数
  let len = arr.length;
  let centerNum;
  if (len % 2 === 0) {
    centerNum = (arr[len / 2] + arr[len / 2 - 1]) / 2;
  } else {
    centerNum = arr[(len - 1) / 2];
  }
  return centerNum;
};
console.log(mergeNums(nums1, nums2));
